package byx.container.core;

import java.io.Serializable;

public interface MethodReferences {
    interface Consumer0 extends Serializable {
        void apply();
    }

    interface Consumer1<T> extends Serializable {
        void apply(T t);
    }

    interface Consumer2<T1, T2> extends Serializable {
        void apply(T1 t1, T2 t2);
    }

    interface Consumer3<T1, T2, T3> extends Serializable {
        void apply(T1 t1, T2 t2, T3 t3);
    }

    interface Consumer4<T1, T2, T3, T4> extends Serializable {
        void apply(T1 t1, T2 t2, T3 t3, T4 t4);
    }

    interface Consumer5<T1, T2, T3, T4, T5> extends Serializable {
        void apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5);
    }

    interface Function0<R> extends Serializable {
        R apply();
    }

    interface Function1<R, T> extends Serializable {
        R apply(T t);
    }

    interface Function2<R, T1, T2> extends Serializable {
        R apply(T1 t1, T2 t2);
    }

    interface Function3<R, T1, T2, T3> extends Serializable {
        R apply(T1 t1, T2 t2, T3 t3);
    }

    interface Function4<R, T1, T2, T3, T4> extends Serializable {
        R apply(T1 t1, T2 t2, T3 t3, T4 t4);
    }

    interface Function5<R, T1, T2, T3, T4, T5> extends Serializable {
        R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5);
    }
}
